export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=srv02.localdomain
export ORACLE_UNQNAME=db01_STB
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/23.0.0/dbhome_1
export ORACLE_SID=db01
export NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS'
export PATH=/usr/sbin:/usr/local/bin:/usr/bin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib


. ~/.bash_profile

show parameter db_name

show parameter db_unique_name

mkdir -p /u01/app/oracle/fast_recovery_area

dgmgrl sys/

prepare database for data guard
  with db_unique_name is db01
  db_recovery_file_dest is '/u01/app/oracle/fast_recovery_area'
  db_recovery_file_dest_size is 20G
  restart;


192.168.1.200   srv01.localdomain srv01
192.168.1.201   srv02.localdomain srv02


db01 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = srv01.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SID = db01)
    )
  )

db01_stb =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = srv02.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SID = db01)
    )
  )

# aliasy dla Data Guard Broker

db01_dgmgrl =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = srv01.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = db01_DGMGRL)
    )
  )

db01_stb_dgmgrl =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = srv02.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = db01_STB_DGMGRL)
    )
  )


------
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = srv01.localdomain)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = db01_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/23.0.0/dbhome_1)
      (SID_NAME = db01)
      (ENVS="TNS_ADMIN=/u01/app/oracle/product/23.0.0/dbhome_1/network/admin")
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

-----

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = srv02.localdomain)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = db01_STB_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/23.0.0/dbhome_1)
      (SID_NAME = db01)
      (ENVS="TNS_ADMIN=/u01/app/oracle/product/23.0.0/dbhome_1/network/admin")
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

----

lsnrctl stop
lsnrctl start
lsnrctl status

tnsping db01
tnsping db01_stb
tnsping db01_dgmgrl
tnsping db01_stb_dgmgrl

*.db_name='db01'
*.db_unique_name='db01_STB'

cat > /tmp/initdb01_stb.ora <<'EOF'
*.db_name='db01'
*.db_unique_name='db01_STB'
EOF


mkdir -p /u01/app/oracle/oradata/DB01/pdbseed
mkdir -p /u01/app/oracle/oradata/DB01/pdb1
mkdir -p /u01/app/oracle/fast_recovery_area
mkdir -p /u01/app/oracle/admin/db01_stb


cd $ORACLE_HOME/dbs

orapwd file=orapwdb01 password="Password_1" entries=10


sql / as sysdba

STARTUP NOMOUNT PFILE='/tmp/initdb01_stb.ora';

echo 'select host_name from v$instance;' | sql -S sys/Password_1@db01 as sysdba

echo 'select host_name from v$instance;' | sql -S sys/Password_1@db01_stb as sysdba


rman TARGET sys/Password_1@db01 AUXILIARY sys/Password_1@db01_stb


run {
  duplicate target database for standby from active database
    dorecover
    spfile
      set db_unique_name='db01_STB'
      set db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
      set db_recovery_file_dest_size='20G'
    nofilenamecheck;
}


sql / as sysdba

ALTER SYSTEM SET DG_BROKER_START=TRUE SCOPE=BOTH;

dgmgrl sys/

create configuration konfiguracja
  as primary database is db01
  connect identifier is db01_dgmgrl;


add database db01_STB
  as connect identifier is db01_stb_dgmgrl;

enable configuration;

show configuration;

show database db01;

show database db01_stb;

sql / as sysdba

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

dgmgrl sys/Password_1@db01_dgmgrl

switchover to db01_STB;

dgmgrl sys/Password_1@db01_stb_dgmgrl

switchover to db01;

dgmgrl sys/Password_1@db01_stb_dgmgrl

failover to db01_STB;




